package com.yellowpage.omc.ability.action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.yellowpage.white.common.Configuration;
import com.yellowpage.white.common.Constants;
import com.yellowpage.white.struts.BaseAction;
import com.yellowpage.white.struts.Module;
import com.yellowpage.white.struts.OperationType;
import com.yellowpage.white.util.Util4Java;
import com.yellowpage.omc.ability.data.PartnerParamValue;
import com.yellowpage.omc.ability.service.AppInterfaceService;
import com.yellowpage.omc.ability.service.PartnerParamValueService;
import com.yellowpage.omc.ability.service.PartnerService;

public class PartnerParamValueAction extends BaseAction {

	public String RESULT_QUERY = "query";
	public String RESULT_ADD = "add";
	public String RESULT_EDIT = "edit";

	private Configuration configuration;

	public void setConfiguration(Configuration configuration) {
		this.configuration = configuration;
	}

	private List<PartnerParamValue> partnerParamValueList = new ArrayList<PartnerParamValue>();
	private List<Map> resultList = new ArrayList<Map>();

	private PartnerParamValue partnerParamValue;
	private PartnerParamValueService partnerParamValueService;
	private AppInterfaceService appInterfaceService;
	private PartnerService partnerService;

	private String selectedId;
	private String[] selectedIds;
	private String message;

	private String query_partnerParamValueId;
	private String query_interfaceParamId;
	private String query_paramValueId;
	private String query_paramValue;
	private String query_note;
	private String query_createUser;
	private String query_createTime;
	private String query_lastUpdateUser;
	private String query_lastUpdateTime;
	private String query_status;
	private String query_partnerId;
	private String query_interfaceId;
	
	private String update_partner;
	private String update_interface;
	
	private String query_LastSynchronizationUser;
	private String query_LastSynchronizationTime;

	private Map partnerMap = new HashMap();
	private Map appInterfaceMap = new HashMap();

	public void prepare() {
		super.prepare();

		partnerMap = partnerService.getPartnerMap();
		appInterfaceMap = appInterfaceService.getAppInterfaceMap();

		if (this.selectedId != null && !this.selectedId.equals("")) {
			this.partnerParamValue = partnerParamValueService
					.getPartnerParamValue(Long.parseLong(selectedId));
		}
	}

	public String queryByPage() {
		initPageRender();

		Map queryMap = new HashMap();
		queryMap.put("partnerId", query_partnerId);
		queryMap.put("interfaceId", query_interfaceId);
		queryMap.put("partnerParamValueId", query_partnerParamValueId);
		queryMap.put("interfaceParamId", query_interfaceParamId);
		queryMap.put("paramValueId", query_paramValueId);
		queryMap.put("paramValue", query_paramValue);
		queryMap.put("note", query_note);
		queryMap.put("createUser", query_createUser);
		queryMap.put("createTime", query_createTime);
		queryMap.put("lastUpdateUser", query_lastUpdateUser);
		queryMap.put("lastUpdateTime", query_lastUpdateTime);
		queryMap.put("status", query_status);
		queryMap.put("LastSynchronizationUser", query_LastSynchronizationUser);
		queryMap.put("LastSynchronizationTime", query_LastSynchronizationTime);

		resultList = partnerParamValueService.queryPartnerParamValueByPage(
				queryMap, pageRender);

		setPageRenderToRequest();

		return RESULT_QUERY;
	}

	public String toAdd() {
		return RESULT_ADD;
	}

	public String save() {

		partnerParamValue.setCreateTime(new Date());
		partnerParamValue.setCreateUser(loginUser.getUserId());
		partnerParamValue.setLastUpdateTime(new Date());
		partnerParamValue.setLastUpdateUser(loginUser.getUserId());
		partnerParamValue.setStatus("1");

		partnerParamValueService.savePartnerParamValue(partnerParamValue);

		message = "新增成功!";
		return RESULT_ADD;
	}

	public void validateSave() {
		if (partnerParamValue.getParamValue().length() == 0) {
			this.addActionError("** 参数值 不能为空 !");
		}
		if (partnerParamValue.getStatus().length() == 0) {
			this.addActionError("** 状态 不能为空 !");
		}
		this.setValidatorResult("/omc/ability/PartnerParamValueAdd.jsp");
	}

	public String toEdit() {
		Long id = new Long(selectedId);
		
		partnerParamValue = partnerParamValueService.getPartnerParamValue(id);
		
		update_partner = partnerParamValueService.getPartnerNameByPartnerInterfaceId(partnerParamValue.getPartnerInterfaceId());
		update_interface = partnerParamValueService.getInterfaceNameByPartnerInterfaceId(partnerParamValue.getPartnerInterfaceId());

		return RESULT_EDIT;
	}

	public String update() {

		partnerParamValue.setLastUpdateTime(new Date());
		partnerParamValue.setLastUpdateUser(loginUser.getUserId());

		partnerParamValueService.updatePartnerParamValue(partnerParamValue);

		message = "修改成功!";

		return RESULT_EDIT;
	}

	public void validateUpdate() {
		if (partnerParamValue.getParamValue().length() == 0) {
			this.addActionError("** 参数值 不能为空 !");
		}
		if (partnerParamValue.getStatus().length() == 0) {
			this.addActionError("** 状态 不能为空 !");
		}
		
		this.setValidatorResult("/omc/ability/PartnerParamValueUpdate.jsp");
	}

	public String delete() {
		List ids = new ArrayList();

		for (String id : selectedIds) {
			ids.add(Long.valueOf(id));
		}

		try {
			this.partnerParamValueService.delete(ids);
		} catch (Exception e) {
			System.out.println("异常....");
			this.addActionError("** 可能含有子记录约束冲突，删除失败 !");
		}

		return queryByPage();
	}

	/**
	 * getters and setters
	 * 
	 * @return
	 */
	public void setPartnerParamValue(PartnerParamValue partnerParamValue) {
		this.partnerParamValue = partnerParamValue;
	}

	public PartnerParamValue getPartnerParamValue() {
		return partnerParamValue;
	}

	public void setPartnerParamValueService(
			PartnerParamValueService partnerParamValueService) {
		this.partnerParamValueService = partnerParamValueService;
	}

	public List<PartnerParamValue> getPartnerParamValueList() {
		return partnerParamValueList;
	}

	public void setPartnerParamValueList(
			List<PartnerParamValue> partnerParamValueList) {
		this.partnerParamValueList = partnerParamValueList;
	}

	public String getSelectedId() {
		return selectedId;
	}

	public void setSelectedId(String selectedId) {
		this.selectedId = selectedId;
	}

	public String[] getSelectedIds() {
		return selectedIds;
	}

	public void setSelectedIds(String[] selectedIds) {
		this.selectedIds = selectedIds;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public List<Map> getResultList() {
		return resultList;
	}

	public void setResultList(List<Map> resultList) {
		this.resultList = resultList;
	}

	public String getQuery_partnerParamValueId() {
		return this.query_partnerParamValueId;
	}

	public void setQuery_partnerParamValueId(String partnerParamValueId) {
		this.query_partnerParamValueId = partnerParamValueId;
	}

	public String getQuery_interfaceParamId() {
		return this.query_interfaceParamId;
	}

	public void setQuery_interfaceParamId(String interfaceParamId) {
		this.query_interfaceParamId = interfaceParamId;
	}

	public String getQuery_paramValueId() {
		return this.query_paramValueId;
	}

	public void setQuery_paramValueId(String paramValueId) {
		this.query_paramValueId = paramValueId;
	}

	public String getQuery_paramValue() {
		return this.query_paramValue;
	}

	public void setQuery_paramValue(String paramValue) {
		this.query_paramValue = paramValue;
	}

	public String getQuery_note() {
		return this.query_note;
	}

	public void setQuery_note(String note) {
		this.query_note = note;
	}

	public String getQuery_createUser() {
		return this.query_createUser;
	}

	public void setQuery_createUser(String createUser) {
		this.query_createUser = createUser;
	}

	public String getQuery_createTime() {
		return this.query_createTime;
	}

	public void setQuery_createTime(String createTime) {
		this.query_createTime = createTime;
	}

	public String getQuery_lastUpdateUser() {
		return this.query_lastUpdateUser;
	}

	public void setQuery_lastUpdateUser(String lastUpdateUser) {
		this.query_lastUpdateUser = lastUpdateUser;
	}

	public String getQuery_lastUpdateTime() {
		return this.query_lastUpdateTime;
	}

	public void setQuery_lastUpdateTime(String lastUpdateTime) {
		this.query_lastUpdateTime = lastUpdateTime;
	}

	public String getQuery_status() {
		return this.query_status;
	}

	public void setQuery_status(String status) {
		this.query_status = status;
	}

	public AppInterfaceService getAppInterfaceService() {
		return appInterfaceService;
	}

	public void setAppInterfaceService(AppInterfaceService appInterfaceService) {
		this.appInterfaceService = appInterfaceService;
	}

	public PartnerService getPartnerService() {
		return partnerService;
	}

	public void setPartnerService(PartnerService partnerService) {
		this.partnerService = partnerService;
	}

	public Map getPartnerMap() {
		return partnerMap;
	}

	public void setPartnerMap(Map partnerMap) {
		this.partnerMap = partnerMap;
	}

	public Map getAppInterfaceMap() {
		return appInterfaceMap;
	}

	public void setAppInterfaceMap(Map appInterfaceMap) {
		this.appInterfaceMap = appInterfaceMap;
	}

	public String getUpdate_partner() {
		return update_partner;
	}

	public void setUpdate_partner(String update_partner) {
		this.update_partner = update_partner;
	}

	public String getUpdate_interface() {
		return update_interface;
	}

	public void setUpdate_interface(String update_interface) {
		this.update_interface = update_interface;
	}

	public String getQuery_partnerId() {
		return query_partnerId;
	}

	public void setQuery_partnerId(String query_partnerId) {
		this.query_partnerId = query_partnerId;
	}

	public String getQuery_interfaceId() {
		return query_interfaceId;
	}

	public void setQuery_interfaceId(String query_interfaceId) {
		this.query_interfaceId = query_interfaceId;
	}
	/**
	 * @return the query_LastSynchronizationUser
	 */
	public String getQuery_LastSynchronizationUser() {
		return query_LastSynchronizationUser;
	}

	/**
	 * @param query_LastSynchronizationUser the query_LastSynchronizationUser to set
	 */
	public void setQuery_LastSynchronizationUser(
			String query_LastSynchronizationUser) {
		this.query_LastSynchronizationUser = query_LastSynchronizationUser;
	}

	/**
	 * @return the query_LastSynchronizationTime
	 */
	public String getQuery_LastSynchronizationTime() {
		return query_LastSynchronizationTime;
	}

	/**
	 * @param query_LastSynchronizationTime the query_LastSynchronizationTime to set
	 */
	public void setQuery_LastSynchronizationTime(
			String query_LastSynchronizationTime) {
		this.query_LastSynchronizationTime = query_LastSynchronizationTime;
	}

	public PartnerParamValueService getPartnerParamValueService() {
		return partnerParamValueService;
	}

}
